package com.edt.ichannel.api.service;

import com.edt.ichannel.api.common.entity.ActionResult;
import com.edt.ichannel.api.entiy.local.*;

import java.util.List;

/**
 * @author 肖瑶
 */
public interface OrderChannelService {
    /**
     * 受理结果回调
     *
     * @param ordercode  订单流水
     * @param orderstate 订单状态
     * @param remark     退单标注
     * @return 返回值
     */
    ActionResult orderBack(String ordercode, String orderstate, String remark);

    /**
     * 根据日期查询同步的订单
     *
     * @param dateStr 精确到日 为空则查询所有
     * @return 订单列表
     */
    List<OrderChannel> selectOrderChannelListJF(String dateStr);

    /**
     * 查询月发展量订单
     *
     * @param dateStr 月时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/6/8 11:14
     */
    List<OrderChannel> selectOrderChannelMonthListJF(String dateStr);

    /**
     * 根据日期查询同步的订单
     *
     * @param dateStr 精确到日 为空则查询所有
     * @return 订单列表
     * @author 孙梁
     * 2018/6/11 9:54
     */
    List<OrderChannel> selectOrderChannelListXXH(String dateStr);

    /**
     * 查询月发展量订单
     *
     * @param dateStr 月时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/6/11 9:54
     */
    List<OrderChannel> selectOrderChannelMonthListXXH(String dateStr);

    /**
     * 根据时间字符串 查询特定人的订单
     *
     * @param dataStr yyyymmdd
     * @return com.edt.ichannel.api.common.entity.ActionResult
     * 同步结果
     * @author 孙梁
     * 2018/8/3 10:52
     */
    List<OrderChannel> selectActivityStaff(String dataStr);

    /**
     * 查询没有计算佣金的成卡信息
     *
     * @param dayStr 日期字符串 精确到天
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * selectOrderChannelWithoutFirstMoneyByDay
     * @author 孙梁
     * 2018/8/23 9:19
     */
    List<OrderChannel> selectOrderChannelCkWithoutCommissionByDay(String dayStr);

    /**
     * 查询成功非融合数据
     *
     * @param dayStr 时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/9/7 16:08
     */
    List<OrderChannel> selectOrderChannelDay(String dayStr);


    /**
     * 查询没有计算佣金的宽带数据并且number_tel不为空的
     *
     * @param dayStr 时间字符串
     * @return java.util.List<com.edt.ichannel.api.entiy.local.OrderChannel>
     * 查询结果
     * @author 孙梁
     * 2018/9/26 14:37
     */
    List<OrderChannel> selectOrderChannelKdWithoutCommissionByDay(String dayStr);

    /**
     * 根据手机号查询最近一条订单
     *
     * @param phoneNumber 手机号
     * @return com.edt.ichannel.api.entiy.local.OrderChannel
     * 返回结果
     * @author 孙梁
     * 2018/9/28 14:59
     */
    OrderChannel selectOrderChannelByNumberPhone(String phoneNumber);

    /**
     * 根据订单号 查询合伙人级别和类型
     *
     * @param orderCreditKd 订单信息
     * @author 孙梁
     * 2018/10/23 11:53
     */
    void setExpansionTypeAndLevl(OrderCreditKd orderCreditKd);

    void setExpansionTypeAndLevl(OrderCreditCK orderCreditCK);

    void setExpansionTypeAndLevl(OrderCreditBf orderCreditBf);
    void setExpansionTypeAndLevl(OrderCreditMonth orderCreditMonth);

    OrderChannel selectOrderCHannelByOrderCode(String orderCode);

    /**
     * 查询C流程成卡数据
     *
     * @param day 如果有日期，则格式为'yyyy-MM-dd'
     * @return 查询结果
     */
    List<OrderChannel> selectOrderChannelCkCWithoutCommissionByDay(String day);

    /**
     * 查询C流程宽带数据
     *
     * @param day 如果有日期，则格式为'yyyy-MM-dd'
     * @return 查询结果
     */
    List<OrderChannel> selectOrderChannelKdCWithoutCommissionByDay(String day);


    /**
     * 查询需要补发的订单
     *
     * @param cityCode        地市编码
     * @param continuitionDay 补发时间
     * @param productId       产品Id
     * @param typeStr         合伙人类型
     * @return 查询结果
     */
    List<OrderChannel> getNeedBFOrder(String cityCode, int continuitionDay, String productId, String typeStr);

    /**
     * 将发送过得数据ispush状态变更
     */
    void updateD05AddToIsPushOver();

    /**
     * 获取推送给放心权益中心的订单数据
     *
     * @param dayStr dayStr
     * @return List<OrderChannel>
     * @author 李爽
     * @date 2019/1/25 10:51
     */
    List<OrderChannel> selectOrderChannelDayForFXQYZX(String dayStr);
}
